//public class Main {
//    public static void main(String[] args) {
//        int ans = 0;
//        int i = 1;
//        while(ans < 2023) {
//            if(check(i,2) && check(i,8) && check(i,10) && check(i,16)) {
//                ans++;
//                System.out.println("第" + ans + "个哈沙德数是 : " + i);
//            }
//            //System.out.println(i);
//            i++;
//        }
//    }
//
//    public static boolean check(int x, int n) {
//        int t = x;
//        int sum = 0;
//        while(x!=0) {
//            sum += x%n;
//            x/=n;
//        }
//        return t % sum == 0;
//    }
//}

//
//import java.util.Scanner;
//
//public class Main {
//    static int t;
//    static final long mod = 1000000007;
//    static long[] arr;
//    static Scanner scanner = new Scanner(System.in);
//
//    public static void main(String[] args) {
//        //System.out.println(fun(2,2));
//        t = scanner.nextInt();
//        while (t-- > 0) {
//            function();
//        }
//    }
//
//    public static void function() {
//        //读入数据
//        int n = scanner.nextInt();
//        int sum = 0; //数组总和
//        arr = new long[n];
//        long js = 0, os = 0;
//        for (int i = 0; i < n; i++) {
//            arr[i] = scanner.nextLong();
//            sum += arr[i];
//            if (arr[i] % 2 == 1) js++;
//            else os++;
//        }
//        //如果和为奇数, 直接输出结果
//        if (sum % 2 == 1) {
//            System.out.println(0);
//            return;
//        }
//        //System.out.println(js + " " + os);
//        long ret1 = 1;
//        long ret2 = 0;
//        for (int i = 1; i <= js; i += 2) {
//            ret1 += fun(js, i);
//            ret1 %= mod;
//        }
//        for (int i = 0; i <= os; i += 1) {
//            ret2 += fun(os,i);
//            ret2 %= mod;
//        }
//        //System.out.println(ret1 + " " + ret2);
//        System.out.println(ret1 * ret2 % mod);
//    }
//
//    public static long fun(long n, long k) {
//        if(k == 0 || k == n) return 1;
//        //计算k的阶乘
//        long fm = 1;
//        for(int i = 1; i<=k; i++) {
//            fm *= i;
//            fm %= mod;
//        }
//
//        int fz = 1;
//        for(long i = k+1; i<=n; i++) {
//            fz *= i;
//            fz %= mod;
//        }
//        return fz/fm;
//    }
//}

import java.util.Scanner;

public class Main {
    static int t;
    static final long mod = 1000000007l;
    static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        //System.out.println(fun(2,2));
        t = scanner.nextInt();
        while (t-- > 0) {
            function();
        }
    }

    public static void function() {
        //读入数据
        int n = scanner.nextInt();
        long sum = 0; //数组总和
        long js = 0, os = 0;
        for (int i = 0; i < n; i++) {
            long x = scanner.nextLong();
            sum += x;
            if (x % 2 == 1) js++;
            else os++;
        }
        //如果和为奇数, 直接输出结果
        if (sum % 2 == 1) {
            System.out.println(0);
            return;
        }

        long ret1 = pow(os);
        long ret2 = pow(js-1);

        System.out.println(ret1*ret2%mod);
    }

    public static long pow(long k) {
        long sum = 1;
        for (int i = 0; i < k; i++) {
           sum = (sum*2)%mod;
        }
        return sum % mod;
    }
}
















